<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en" xml:lang="en" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Guideline: Promoting Changes</title>
<meta name="uma.type" content="Guideline">
<meta name="uma.name" content="promoting_changes">
<meta name="uma.presentationName" content="Promoting Changes">
<meta name="element_type" content="other">
<meta name="filetype" content="description">
<meta name="role" content="">
<link rel="StyleSheet" href="./../../../css/default.css" type="text/css">
<script src="./../../../scripts/ContentPageResource.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSubSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageToolbar.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/contentPage.js" type="text/javascript" language="JavaScript"></script><script type="text/javascript" language="JavaScript">
					var backPath = './../../../';
					var imgPath = './../../../images/';
					var nodeInfo=null;
					contentPage.preload(imgPath, backPath, nodeInfo,  '', false, false, false);
				</script>
</head>
<body>
<div id="breadcrumbs"></div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top"><a name="Top"></a>
<div id="page-guid" value="_SM4YIL6dEdqti4GwqTkbsQ"></div>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td class="pageTitle" nowrap="true">Guideline: Promoting Changes</td><td width="100%">
<div align="right" id="contentPageToolbar"></div>
</td><td width="100%" class="expandCollapseLink" align="right"><a name="mainIndex" href="./../../../index.htm"></a><script language="JavaScript" type="text/javascript" src="./../../../scripts/treebrowser.js"></script></td>
</tr>
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="pageTitleSeparator"><img src="./../../../images/shim.gif" alt="" title="" height="1"></td>
</tr>
</table>
<div class="overview">
<table width="97%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50"><img src="./../../../images/guidance.gif" alt="" title=""></td><td>
<table class="overviewTable" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">This guideline describes how to promote a set of related changes up through a set of tiers from a private development area to a release area.</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Relationships</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<th class="sectionTableHeading" scope="row">Related Elements</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../../practice.tech.continuous_integration.base/tasks/integrate_and_create_build_6191BF5D.html" guid="_kkZBgJOKEdyaRbFYa4AN4A">Integrate and Create Build</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Main Description</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td class="sectionTableSingleCell"><p>
    During iterative software development, the team&nbsp;creates numerous <a class="elementLink" href="./../../../core.mgmt.common.extend_supp/guidances/concepts/change_set_430BF233.html" guid="_1QU9MAIoEdyLh7vsrHZ4YA">Change Set</a>s that are combined into a <a class="elementLink" href="./../../../practice.tech.continuous_integration.base/workproducts/build_95D7D8FD.html" guid="_0YuXEMlgEdmt3adZL5Dmdw">Build</a>. A build is initiated by combining the work completed by one or more
    developers and resolving any conflicts between those changes. Ideally a build is then subjected to a battery of tests
    to determine if it is of sufficient quality to move into production.
</p>
<p>
    As the changes progress from development towards production, its beneficial to know two characteristics:
</p>
<p>
    <strong>Test Context</strong>&nbsp;– identifying the elements and their versions that are tested together
</p>
<ul>
    <li>
        What changes are in this build (completed work items)
    </li>
    <li>
        What&nbsp;changes are&nbsp;partially in this build (work items that are partially complete)
    </li>
    <li>
        What changes are&nbsp;not in this build (work items that are not reflected at all in this build)
    </li>
</ul>
<p>
    <strong>Verification Level</strong> – identifying what amount of testing is complete.&nbsp; For example,
</p>
<ul>
    <li>
        Unit Tested
    </li>
    <li>
        Integration Tested
    </li>
    <li>
        System Tested
    </li>
</ul>
<p>
    The promotion lifecycle coordinates and synchronizes the efforts of the development team. This lifecycle consists of
    the following steps:
</p>
<ul>
    <li>
        Changes are introduced into the system in the form of completed&nbsp;<a class="elementLink" href="./../../../core.mgmt.common.extend_supp/guidances/concepts/change_set_430BF233.html" guid="_1QU9MAIoEdyLh7vsrHZ4YA">Change Set</a>s
    </li>
    <li>
        A build is generated clearly identifying the&nbsp;changes included in the build
    </li>
    <li>
        Testing is conducted
    </li>
    <li>
        When testing is successful the changes are marked with the appropriate&nbsp;verification level through labeling,
        baselining or other related techniques.
    </li>
</ul>
<p>
    Ultimately all required testing is complete and a new system&nbsp;increment is ready.
</p>
<p>
    Separate&nbsp;<a class="elementLink" href="./../../../practice.tech.continuous_integration.base/guidances/concepts/workspace_722BBA90.html" guid="_0cEmAMlgEdmt3adZL5Dmdw">Workspace</a>s are often used as the context for each level of testing. As changes are
    added to the <a class="elementLink" href="./../../../practice.tech.continuous_integration.base/guidances/concepts/workspace_722BBA90.html" guid="_0cEmAMlgEdmt3adZL5Dmdw">Workspace</a>, it is verified for consistency and tested. This ensures that the effort
    of testing a build is applied to the correct&nbsp;set of changes, makes the context for the tests stable,&nbsp;and also
    allows developers to continue working on the next build while the tests are being conducted.
</p>
<p>
    A change promotion lifecycle such as this offers three key benefits
</p>
<ol>
    <li>
        Reduces effort because there is no reason to execute the tests in the next stages until the&nbsp;changes passes the
        previous stage. For example you would not commit the resources to&nbsp;system testing a build until it
        passes&nbsp;developer tests.
    </li>
    <li>
        Helps to ensure that a change&nbsp;which is moved into production has been subjected to the appropriate level of
        testing first.
    </li>
    <li>
        Simplifies debugging since developers can base their work on a proven&nbsp;set of changes&nbsp;in relative
        isolation from destabilizing changes from other developers
    </li>
</ol>
<p>
    For an example of this approach see <a href="http://www.agiledata.org/essays/sandboxes.html" target="_blank">Development Sandboxes: An Agile "Best" Practice.</a>
</p></td>
</tr>
</table>
</div>
<table class="copyright" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="copyright"><p> This program and the accompanying materials are made available under the<br />
  <a href="http://www.eclipse.org/org/documents/epl-v10.php" target="_blank">Eclipse 
  Public License V1.0</a>, which accompanies this distribution. </p><p/><p> <a class="elementLink" href="./../../../core.default.release_copyright.base/guidances/supportingmaterials/openup_copyright_C3031062.html" guid="_UaGfECcTEduSX6N2jUafGA">OpenUP Copyright</a></p></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script type="text/javascript" language="JavaScript">
				contentPage.onload();
			</script>
</html>
